package com.shujia.wyh.day12;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.TreeSet;
import java.util.Scanner;

/*
    键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

 */
public class IOTest3 {
    public static void main(String[] args) throws IOException {
        //创建集合对象
        TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //主要条件：按照总分从高到低
                int i = o2.getSumScore() - o1.getSumScore();
                //总分一样，语文成绩不一定一样
                int i2 = (i == 0) ? o2.getChinese() - o1.getChinese() : i;
                //总分一样，语文成绩一样，数学成绩不一定一样
                int i3 = (i2 == 0) ? o2.getMath() - o1.getMath() : i2;
                //各科成绩一样，姓名不一定一样
                int i4 = (i3 == 0) ? o2.getName().compareTo(o1.getName()) : i3;
                return i4;
            }
        });

        System.out.println("=========================欢迎使用学生信息系统=========================");
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        Student student = null;
        for (int i = 1; i <= 5; i++) {
            System.out.println("当前正在录入第" + i + "个学生的信息");
            System.out.print("请输入学生的姓名:");
            String name = sc.next();
            System.out.print("请输入" + name + "学生的语文成绩:");
            int chinese = sc.nextInt();
            System.out.print("请输入" + name + "学生的数学成绩:");
            int math = sc.nextInt();
            System.out.print("请输入" + name + "学生的英语成绩:");
            int english = sc.nextInt();

            //创建学生对象
            student = new Student(name, chinese, math, english);


            //将学生对象添加到集合中
            set.add(student);
            System.out.println("===========================================");
        }
        System.out.println("===============学生成绩录入完毕！！！===============");
        System.out.println("正在保存学生信息到students.txt文件中.....");
        //创建字符缓冲输出流对象
        //csv的文件，默认的分隔符就是英文逗号
        BufferedWriter bw = new BufferedWriter(new FileWriter("java/src/com/shujia/wyh/day12/students.csv"));
        bw.write("姓名,语文成绩,数学成绩,英语成绩,总成绩");
        bw.newLine();
        bw.flush();
        //遍历集合获取学生对象，写入到文件中
        for (Student student1 : set) {
            bw.write(student1.getName()+","+
                    student1.getChinese()+","+
                    student1.getMath()+","+
                    student1.getEnglish()+","+
                    student1.getSumScore());
            bw.newLine();
            bw.flush();
        }
        System.out.println("学生成绩保存完毕！！！");

        //释放资源
        if(bw!=null){
            bw.close();
        }

    }
}
